﻿package kit4j.util.io;

import java.nio.charset.Charset;
import java.util.ResourceBundle;

/**
 * ResourceBundle的工具类。<br />
 * 以下代码从ResourceBundle对象中以ISO-8859-1字符集获取字符串并以UTF-8字符集生成字符串：
 * 
 * <pre>
 * <code>
 *  ResourceBundleUtil.getString(resource, "name", 
 * 				Charset.forName("ISO-8859-1"),
 * 				Charset.forName("UTF-8"));
 * </code>
 * </pre>
 * 
 * {@link ResourceBundle#getBundle(String) ResourceBundle#getBundle(String)}系列方法返回的ResourceBundle对象获取的字符串
 * 使用的ISO-8859-1字符集，所以通常直接使用以下代码即可完成与上同样的功能： ResourceBundleUtil.getString(resource, "name", "UTF-8");
 * 
 * @author MiniKnife
 * 
 */
public class ResourceBundleUtil {

	/**
	 * 从ResourceBundle对象中以指定Charset获取字符串并以指定Charset生成一个新的字符串。
	 * 
	 * @param resource
	 *            ResourceBundle对象
	 * @param key
	 *            所需字符串的键
	 * @param resCharset
	 *            源字符串的Charset
	 * @param targetCharset
	 *            目标字符串的Charset
	 * @return 指定Charset生成的字符串
	 */
	public static String getString(ResourceBundle resource, String key, Charset resCharset, Charset targetCharset) {
		return new String(resource.getString(key).getBytes(resCharset), targetCharset);
	}

	/**
	 * 从ResourceBundle对象中以指定Charset获取字符串并以指定Charset生成一个新的字符串。
	 * 
	 * @param resource
	 *            ResourceBundle对象
	 * @param key
	 *            所需字符串的键
	 * @param resCharset
	 *            源字符串的Charset
	 * @param targetCharset
	 *            目标字符串的Charset
	 * @return 指定Charset生成的字符串
	 */
	public static String getString(ResourceBundle resource, String key, String resCharset, String targetCharset) {
		return new String(resource.getString(key).getBytes(Charset.forName(resCharset)), Charset.forName(targetCharset));
	}

	/**
	 * 从ResourceBundle对象中以"ISO-8859-1"字符集获取字符串并以指定Charset生成一个新的字符串。
	 * 
	 * @param resource
	 *            ResourceBundle对象
	 * @param key
	 *            所需字符串的键
	 * @param targetCharset
	 *            目标字符串的Charset
	 * @return 指定Charset生成的字符串
	 */
	public static String getString(ResourceBundle resource, String key, Charset targetCharset) {
		return new String(resource.getString(key).getBytes(Charset.forName("ISO-8859-1")), targetCharset);
	}

	/**
	 * 从ResourceBundle对象中以"ISO-8859-1"字符集获取字符串并以指定Charset生成一个新的字符串。
	 * 
	 * @param resource
	 *            ResourceBundle对象
	 * @param key
	 *            所需字符串的键
	 * @param targetCharset
	 *            目标字符串的Charset名称
	 * @return 指定Charset生成的字符串
	 */
	public static String getString(ResourceBundle resource, String key, String targetCharset) {
		return new String(resource.getString(key).getBytes(Charset.forName("ISO-8859-1")),
				Charset.forName(targetCharset));
	}
}
